# Queue: 先进先出队列
from queue import Queue

fifo_queue = Queue()

# 添加元素到队列
fifo_queue.put("task1")
fifo_queue.put("task2")
fifo_queue.put("task3")

# 获取并移除队列中的元素
print(fifo_queue.get()) # task1
print(fifo_queue.get()) # task2
print(fifo_queue.get()) # task3
# 注意：如果我们取完了队列中的数据，队列为空了后，再进行get()就会阻塞至到从队列中取到数据

print("=" * 50)
# LifoQueue: 后进先出队列
from queue import LifoQueue

lifo_queue = LifoQueue()

# 向队列中添加元素
lifo_queue.put("task1")
lifo_queue.put("task2")
lifo_queue.put("task3")

print(lifo_queue.get()) # task3
print(lifo_queue.get()) # task2
print(lifo_queue.get()) # task1
# 注意：当我们取完了队列中的数据，队列为空了后，再进行get()就会阻塞至到从队列中取到数据


print("=" * 50)
# PriorityQueue: 优先级队列
from queue import PriorityQueue

priority_queue = PriorityQueue()

# 添加元素到队列
# 元素是一个元组，元组的第一个值是优先级，其越小则优先级越高
priority_queue.put((2,"task1"))
priority_queue.put((3,"task2"))
priority_queue.put((1,"task3"))

# 获取并移除队列中的元素
print(priority_queue.get())
print(priority_queue.get())
print(priority_queue.get())
# 注意：当我们取完了队列中的数据，队列为空了后，再进行get()就会阻塞至到从队列中取到数据
